package model;

import java.io.Serializable;
import java.util.ArrayList;
import java.util.List;

import javax.persistence.CascadeType;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne;
import javax.persistence.OneToMany;
import javax.persistence.Table;

import xml.model.SolicitudCotizacionXML;


//Cotizacion que guardo final que se va a corresponder con RespuestaCotizacionXML que le envio al cliente
@SuppressWarnings("serial")
@Entity
@Table (name="cotizaciones")
public class Cotizacion implements Serializable {

        public Cotizacion(Integer id, Cliente cliente, Integer vigencia,
			Long fechaemision, List<ItemCotizacion> listaItemCotizacion) {
		super();
		this.id = id;
		this.cliente = cliente;
		this.vigencia = vigencia;
		this.fechaemision = fechaemision;
		this.listaItemCotizacion = listaItemCotizacion;
	}

		private Integer id;
        private Cliente cliente;
        private Integer vigencia;
        private Long fechaemision;
        //guardo el mismo item que recibo por eso uso la misma clase
       //a este mismo item tengo que agarrar el precio, ponerle el descuento que tenga el cliente o interes por su condicion de venta y despues aplicarle el porcentaje de iva correspondiente
        private List<ItemCotizacion> listaItemCotizacion = new ArrayList<ItemCotizacion>();
        //indice el porcentaje de iva aplicado a los productos
        private Double montoFinal;
        
        @Id 
        @GeneratedValue(strategy=GenerationType.AUTO)
        @Column(name = "id_cotizacion")
        public Integer getId() {
                return id;
        }

        public void setId(Integer id) {
                this.id = id;
        }

        public Cotizacion() {
                super();
        }

        public Cotizacion(Cliente cliente) {
                super();
                this.cliente = cliente;
             
        }
        
        @ManyToOne
        @JoinColumn(name = "id_cliente")
        public Cliente getCliente() {
                return cliente;
        }

        public void setCliente(Cliente cliente) {
                this.cliente = cliente;
        }
        
        
        public String toString(){
                return "Cliente:"+this.cliente+"Items:"+ this.listaItemCotizacion.toString();
        }

        public void setVO(SolicitudCotizacionXML solicitudCotizacionXML) {
                /*Ver este metodo en Cliente y hacer lo mismo para que tome los valores del vo.*/
        }
        @OneToMany(mappedBy = "cotizacion", cascade = CascadeType.ALL)
		public List<ItemCotizacion> getListaItemCotizacion() {
			return listaItemCotizacion;
		}

		public void setListaItemCotizacion(List<ItemCotizacion> listaItemCotizacion) {
			this.listaItemCotizacion = listaItemCotizacion;
		}

		public Integer getVigencia() {
			return vigencia;
		}

		public void setVigencia(Integer vigencia) {
			this.vigencia = vigencia;
		}

		public Long getFechaemision() {
			return fechaemision;
		}

		public void setFechaemision(Long fechaemision) {
			this.fechaemision = fechaemision;
		}
		
		

		public Double getMontoFinal() {
			return montoFinal;
		}

		public void setMontoFinal(Double montoFinal) {
			this.montoFinal = montoFinal;
		}
}
